#ifndef xpack_utils_static_length_of
#define xpack_utils_static_length_of
#pragma push_macro("xuser")
#undef  xuser
#define xuser mixc::utils_static_length_of::inc
#include"define/base_type.hpp"
#include"macro/xexport.hpp"
#include"meta/is_origin_array.hpp"
#pragma pop_macro("xuser")

namespace mixc::utils_static_length_of::origin{
    /**
     * @brief 
     * 获取静态数组的长度
     * @tparam array_t 原始数组类型
     * @param array 
     * 原始数组，如果不是 type name[Length]; 格式的数组，
     * 而是 type * name; 格式的指针则会报编译错误
     * @return constexpr uxx 获取静态数组的长度
     */
    template<inc::is_origin_array array_t>
    constexpr uxx static_length_of(array_t && array){
        return sizeof(array) / sizeof(array[0]);
    }
}

#endif

xexport_space(mixc::utils_static_length_of::origin)